﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EntregaSO
{
    public class Piso
    {
        private readonly int numero;
        private List<Usuario> usuarios;
        /// <summary>
        /// Los pisos tienen colas de solicitudes.
        /// El metodo para consumir una solicitud puede ser accedido por varios hilos
        /// Los acensores atienden solicitudes de cada piso y los usuarios las generan
        /// </summary>
        /// <param name="numero">numero del piso que se crea</param>
        public Piso(int numero)
        {
            this.numero = numero;
            this.usuarios = new List<Usuario>();
        }
        public List<Usuario> Usuarios
        {
            get { return this.usuarios; }
        }
        /// <summary>
        /// Devuleve el primer usuario del piso cuyo peso sea menor a 
        /// <paramref name="peso"/>
        /// </summary>
        /// <param name="peso">Peso máximo del usuario solicitado</param>
        /// <returns></returns>
        public Usuario ObtenerPrimero(int peso)
        {
            Usuario u1 = null;
            lock (this)
            {
                foreach (Usuario u in usuarios)
                {
                    if (u.Peso <= peso)
                    {
                        u1 = u;
                        break;
                    }
                }
                if (u1 != null)
                {
                    usuarios.Remove(u1);
                }
            }
            return u1;
        }
    }
}
